<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<meta http-equiv="x-UA-Compatible" content="ie=Edge">
   	<meta name="viewport" content="width=device-width, initial-scale=1">
   	<title>Crafty - Crafty.timer</title>
	<link type="text/css" rel="stylesheet" href="../craftyjs-site.css" />
	<link rel="shortcut icon" href="../favicon.ico">
</head>
<body>
	<div id = "header-background"> </div>
	<div id = "page-frame">
	<div id="header">
		<nav class="navbar">
  			<div class="container-fluid">
  				<div class="navbar-header">
  					<a class="navbar-brand" href="../"> <img class="logo" src="../images/text-logo.png" /> </a>
  					
				</div>
				<div class="collapse navbar-collapse navbar-right" id="bs-example-navbar-collapse-1">
					<ul class="nav navbar-nav">
						<li><a href="../">首页</a></li>
						<li><a href="../getting-started/">快速开始</a></li>
						<li><a href="../documentation/">文档</a></li>
						<li><a href="../api/">API</a></li>
						<li><a href="../components/">组件</a></li>
						<li class="emph"><a href="../#install">下载</a></li>
					</ul>
				</div>
			</div>
		</nav>
	</div>


	<div id="main">
		<div id="content" class="container">
			



<div id="docs"><div class="toc-holder" id="doc-nav"><ul id="doc-level-one"><li><a href="events.html">List of Events</a></li><li class="category">Core<ul class="category-list"><li><a href="Crafty.html">Crafty</a></li><li><a href="Crafty Core.html">Crafty Core</a></li><li><a href="Crafty-bind.html">Crafty.bind()</a></li><li><a href="Crafty-c.html">Crafty.c()</a></li><li><a href="Crafty-clone.html">Crafty.clone()</a></li><li><a href="Crafty-defineField.html">Crafty.defineField()</a></li><li><a href="Crafty-e.html">Crafty.e()</a></li><li><a href="Crafty-extend.html">Crafty.extend()</a></li><li><a href="Crafty-frame.html">Crafty.frame()</a></li><li><a href="Crafty-getVersion.html">Crafty.getVersion()</a></li><li><a href="Crafty-init.html">Crafty.init()</a></li><li><a href="Crafty-isPaused.html">Crafty.isPaused()</a></li><li><a href="Crafty-one.html">Crafty.one()</a></li><li><a href="Crafty-pause.html">Crafty.pause()</a></li><li><a href="Crafty-s.html">Crafty.s()</a></li><li><a href="Crafty-settings.html">Crafty.settings</a></li><li><a href="Crafty-stage.html">Crafty.stage</a></li><li><a href="Crafty-stop.html">Crafty.stop()</a></li><li><a href="Crafty-support.html">Crafty.support</a></li><li><a href="Crafty-trigger.html">Crafty.trigger()</a></li><li><a href="Crafty-unbind.html">Crafty.unbind()</a></li><li><a href="Crafty-uniqueBind.html">Crafty.uniqueBind()</a></li></ul></li><li class="category">2D<ul class="category-list"><li><a href="2D.html">2D</a></li><li><a href="AngularMotion.html">AngularMotion</a></li><li><a href="Collision.html">Collision</a></li><li><a href="Crafty-circle.html">Crafty.circle</a></li><li><a href="Crafty-diamondIso.html">Crafty.diamondIso</a></li><li><a href="Crafty-HashMap.html">Crafty.HashMap</a></li><li><a href="Crafty-isometric.html">Crafty.isometric</a></li><li><a href="Crafty-map.html">Crafty.map</a></li><li><a href="Crafty-math-Matrix2D.html">Crafty.math.Matrix2D</a></li><li><a href="Crafty-math-Vector2D.html">Crafty.math.Vector2D</a></li><li><a href="Crafty-polygon.html">Crafty.polygon</a></li><li><a href="Crafty-raycast.html">Crafty.raycast()</a></li><li><a href="Crafty-rectManager.html">Crafty.rectManager</a></li><li><a href="Gravity.html">Gravity</a></li><li><a href="GroundAttacher.html">GroundAttacher</a></li><li><a href="Motion.html">Motion</a></li><li><a href="Supportable.html">Supportable</a></li></ul></li><li class="category">Animation<ul class="category-list"><li><a href="Crafty-easing.html">Crafty.easing</a></li><li><a href="SpriteAnimation.html">SpriteAnimation</a></li><li><a href="Tween.html">Tween</a></li></ul></li><li class="category">Assets<ul class="category-list"><li><a href="Crafty-asset.html">Crafty.asset()</a></li><li><a href="Crafty-assets.html">Crafty.assets</a></li><li><a href="Crafty-imageWhitelist.html">Crafty.imageWhitelist()</a></li><li><a href="Crafty-load.html">Crafty.load()</a></li><li><a href="Crafty-paths.html">Crafty.paths()</a></li><li><a href="Crafty-removeAssets.html">Crafty.removeAssets()</a></li></ul></li><li class="category">Audio<ul class="category-list"><li><a href="Crafty-audio.html">Crafty.audio</a></li></ul></li><li class="category">Controls<ul class="category-list"><li><a href="Controllable.html">Controllable</a></li><li><a href="Controls.html">Controls</a></li><li><a href="Draggable.html">Draggable</a></li><li><a href="Fourway.html">Fourway</a></li><li><a href="Jumper.html">Jumper</a></li><li><a href="Multiway.html">Multiway</a></li><li><a href="Twoway.html">Twoway</a></li></ul></li><li class="category">Debug<ul class="category-list"><li><a href="Crafty-error.html">Crafty.error()</a></li><li><a href="Crafty-log.html">Crafty.log()</a></li><li><a href="DebugCanvas.html">DebugCanvas</a></li><li><a href="DebugPolygon.html">DebugPolygon</a></li><li><a href="DebugRectangle.html">DebugRectangle</a></li><li><a href="SolidAreaMap.html">SolidAreaMap</a></li><li><a href="SolidHitBox.html">SolidHitBox</a></li><li><a href="VisibleMBR.html">VisibleMBR</a></li><li><a href="WiredAreaMap.html">WiredAreaMap</a></li><li><a href="WiredHitBox.html">WiredHitBox</a></li></ul></li><li class="category">Events<ul class="category-list"><li><a href="Crafty-addEvent.html">Crafty.addEvent()</a></li><li><a href="Crafty-bind.html">Crafty.bind()</a></li><li><a href="Crafty-one.html">Crafty.one()</a></li><li><a href="Crafty-removeEvent.html">Crafty.removeEvent()</a></li><li><a href="Crafty-trigger.html">Crafty.trigger()</a></li><li><a href="Crafty-unbind.html">Crafty.unbind()</a></li><li><a href="Crafty-uniqueBind.html">Crafty.uniqueBind()</a></li></ul></li><li class="category">Game Loop<ul class="category-list"><li><a href="Crafty-timer.html">Crafty.timer</a></li></ul></li><li class="category">Graphics<ul class="category-list"><li><a href="Canvas.html">Canvas</a></li><li><a href="CanvasLayer.html">CanvasLayer</a></li><li><a href="Color.html">Color</a></li><li><a href="Crafty-assignColor.html">Crafty.assignColor()</a></li><li><a href="Crafty-background.html">Crafty.background()</a></li><li><a href="Crafty-createLayer.html">Crafty.createLayer()</a></li><li><a href="Crafty-defaultShader.html">Crafty.defaultShader()</a></li><li><a href="Crafty-domHelper.html">Crafty.domHelper</a></li><li><a href="Crafty-pixelart.html">Crafty.pixelart()</a></li><li><a href="Crafty-sprite.html">Crafty.sprite()</a></li><li><a href="Crafty-WebGLShader.html">Crafty.WebGLShader()</a></li><li><a href="DOM.html">DOM</a></li><li><a href="DomLayer.html">DomLayer</a></li><li><a href="HTML.html">HTML</a></li><li><a href="Image.html">Image</a></li><li><a href="Particles.html">Particles</a></li><li><a href="Renderable.html">Renderable</a></li><li><a href="Sprite.html">Sprite</a></li><li><a href="Text.html">Text</a></li><li><a href="WebGL.html">WebGL</a></li><li><a href="WebGLLayer.html">WebGLLayer</a></li></ul></li><li class="category">Input<ul class="category-list"><li><a href="AreaMap.html">AreaMap</a></li><li><a href="Button.html">Button</a></li><li><a href="Crafty-findPointerEventTargetByComponent.html">Crafty.findPointerEventTargetByComponent()</a></li><li><a href="Crafty-keyboardDispatch.html">Crafty.keyboardDispatch()</a></li><li><a href="Crafty-keydown.html">Crafty.keydown</a></li><li><a href="Crafty-keys.html">Crafty.keys</a></li><li><a href="Crafty-lastEvent.html">Crafty.lastEvent</a></li><li><a href="Crafty-mouseButtons.html">Crafty.mouseButtons</a></li><li><a href="Crafty-mouseDispatch.html">Crafty.mouseDispatch()</a></li><li><a href="Crafty-mouseWheelDispatch.html">Crafty.mouseWheelDispatch()</a></li><li><a href="Crafty-multitouch.html">Crafty.multitouch()</a></li><li><a href="Crafty-selected.html">Crafty.selected</a></li><li><a href="Crafty-touchDispatch.html">Crafty.touchDispatch()</a></li><li><a href="Keyboard.html">Keyboard</a></li><li><a href="Mouse.html">Mouse</a></li><li><a href="MouseDrag.html">MouseDrag</a></li><li><a href="Touch.html">Touch</a></li></ul></li><li class="category">Misc<ul class="category-list"><li><a href="Crafty-addEvent.html">Crafty.addEvent()</a></li><li><a href="Crafty-device.html">Crafty.device</a></li><li><a href="Crafty-removeEvent.html">Crafty.removeEvent()</a></li><li><a href="Crafty-support.html">Crafty.support</a></li></ul></li><li class="category">Model<ul class="category-list"><li><a href="Model.html">Model</a></li></ul></li><li class="category">Scenes<ul class="category-list"><li><a href="Crafty-scene.html">Crafty.scene()</a></li></ul></li><li class="category">Stage<ul class="category-list"><li><a href="Crafty-background.html">Crafty.background()</a></li><li><a href="Crafty-scene.html">Crafty.scene()</a></li><li><a href="Crafty-viewport.html">Crafty.viewport</a></li></ul></li><li class="category">Utilities<ul class="category-list"><li><a href="Crafty-math.html">Crafty.math</a></li><li><a href="Delay.html">Delay</a></li><li><a href="Storage.html">Storage</a></li></ul></li></ul></div><div id="doc-content" class="doc-page-holder"><div class="doc-page"><h1>Crafty.timer <span></span></h1><div class="doclet" id="Crafty-timer"><span class="markdown"><p>Handles game ticks</p>
</span></div><div><h4>Methods</h4><ul class="page-toc"><li><a href="#Crafty-timer-FPS">.FPS()</a></li><li><a href="#Crafty-timer-simulateFrames">.simulateFrames()</a></li><li><a href="#Crafty-timer-step">.step()</a></li><li><a href="#Crafty-timer-steptype">.steptype()</a></li></ul><div class="doclet" id="Crafty-timer-FPS"><a href="#doc-nav" class="doc-top">Back to top</a><h2 class="doclet-header">Crafty.timer.FPS()</h2><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">void </span><span class="sig-noun">Crafty.timer.FPS</span></span><span class="sig-seperator">()</span></code></div><span class="markdown"><p>Returns the target frames per second. This is not an actual frame rate.</p>
</span><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">void </span><span class="sig-noun">Crafty.timer.FPS</span></span><span class="sig-seperator">(</span><span class="sig-phrase"><span class="sig-qualifier">Number </span><span class="sig-noun">value</span></span><span class="sig-seperator">)</span></code><dl class="parameter"><dt> value </dt><dd><span class="markdown"><p>the target rate</p>
</span></dd></dl></div><div class="triggered-events"><h4>Events</h4><div class="trigger-list"><dl class="trigger"><dt>FPSChange <span>[<span class="trigger-data"><span class="obj-name">new target FPS</span><span class="obj-props"> = {Number}</span></span>]</span></dt><dd>Triggered when the target FPS is changed by user</dd></dl></div></div><span class="markdown"><p>Sets the target frames per second. This is not an actual frame rate.
The default rate is 50.</p>
</span><div><h4>See Also</h4><ul class="see-also-list"><li><a href="#Crafty-timer-steptype">.steptype</a></li></ul></div></div><div class="doclet" id="Crafty-timer-simulateFrames"><a href="#doc-nav" class="doc-top">Back to top</a><h2 class="doclet-header">Crafty.timer.simulateFrames()</h2><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">this </span><span class="sig-noun">Crafty.timer.simulateFrames</span></span><span class="sig-seperator">(</span><span class="sig-phrase"><span class="sig-qualifier">Number </span><span class="sig-noun">frames</span></span><span class="sig-seperator">[,</span><span class="sig-phrase"><span class="sig-qualifier"> </span><span class="sig-qualifier">Number </span><span class="sig-noun">timestep</span></span><span class="sig-seperator">])</span></code><span class="markdown"><p>Advances the game state by a number of frames and draws the resulting stage at the end. Useful for tests and debugging.</p>
</span><dl class="parameter"><dt> frames </dt><dd><span class="markdown"><p>number of frames to simulate</p>
</span></dd></dl><dl class="parameter"><dt> timestep </dt><dd><span class="markdown"><p>the duration to pass each frame.  Defaults to milliSecPerFrame (20 ms) if not specified.</p>
</span></dd></dl></div></div><div class="doclet" id="Crafty-timer-step"><a href="#doc-nav" class="doc-top">Back to top</a><h2 class="doclet-header">Crafty.timer.step()</h2><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">void </span><span class="sig-noun">Crafty.timer.step</span></span><span class="sig-seperator">()</span></code></div><div class="triggered-events"><h4>Events</h4><div class="trigger-list"><dl class="trigger"><dt>EnterFrame <span>[<span class="trigger-data"><span class="obj-name">Data</span><span class="obj-props"> = { frame: Number, dt:Number }</span></span>]</span></dt><dd>Triggered on each frame.  Passes the frame number, and the amount of time since the last frame.  If the time is greater than maxTimestep, that will be used instead.  (The default value of maxTimestep is 50 ms.)</dd></dl><dl class="trigger"><dt>ExitFrame <span>[<span class="trigger-data"><span class="obj-name">Data</span><span class="obj-props"> = { frame: Number, dt:Number }</span></span>]</span></dt><dd>Triggered after each frame.  Passes the frame number, and the amount of time since the last frame.  If the time is greater than maxTimestep, that will be used instead.  (The default value of maxTimestep is 50 ms.)</dd></dl><dl class="trigger"><dt>PreRender </dt><dd>Triggered every time immediately before a scene should be rendered</dd></dl><dl class="trigger"><dt>RenderScene </dt><dd>Triggered every time a scene should be rendered</dd></dl><dl class="trigger"><dt>PostRender </dt><dd>Triggered every time immediately after a scene should be rendered</dd></dl><dl class="trigger"><dt>MeasureWaitTime <span>[<span class="trigger-data"><span class="obj-name">Data</span><span class="obj-props"> = {Number}</span></span>]</span></dt><dd>Triggered at the beginning of each step after the first.  Passes the time the game loop waited between steps.</dd></dl><dl class="trigger"><dt>MeasureFrameTime <span>[<span class="trigger-data"><span class="obj-name">Data</span><span class="obj-props"> = {Number}</span></span>]</span></dt><dd>Triggered after each frame.  Passes the time it took to advance one frame.</dd></dl><dl class="trigger"><dt>MeasureRenderTime <span>[<span class="trigger-data"><span class="obj-name">Data</span><span class="obj-props"> = {Number}</span></span>]</span></dt><dd>Triggered after each render. Passes the time it took to render the scene</dd></dl></div></div><span class="markdown"><p>Advances the game by performing a step. A step consists of one/multiple frames followed by a render. The amount of frames depends on the timer&#39;s steptype.
Specifically it triggers <code>EnterFrame</code> &amp; <code>ExitFrame</code> events for each frame and <code>PreRender</code>, <code>RenderScene</code> &amp; <code>PostRender</code> events for each render.</p>
</span><div><h4>See Also</h4><ul class="see-also-list"><li><a href="#Crafty-timer-steptype">.steptype</a></li><li><a href="#Crafty-timer-FPS">.FPS</a></li></ul></div></div><div class="doclet" id="Crafty-timer-steptype"><a href="#doc-nav" class="doc-top">Back to top</a><h2 class="doclet-header">Crafty.timer.steptype()</h2><div class="triggered-events"><h4>Events</h4><div class="trigger-list"><dl class="trigger"><dt>NewSteptype <span>[<span class="trigger-data"><span class="obj-name">New steptype</span><span class="obj-props"> = { mode, maxTimeStep }</span></span>]</span></dt><dd>when the current steptype changes</dd></dl></div></div><span class="markdown"><p>Can be called to set the type of timestep the game loop uses.</p>
</span><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">void </span><span class="sig-noun">Crafty.timer.steptype</span></span><span class="sig-seperator">(</span><span class="sig-phrase"><span class="sig-qualifier">mode </span><span class="sig-noun"></span></span><span class="sig-seperator">[,</span><span class="sig-phrase"><span class="sig-qualifier"> </span><span class="sig-noun">maxTimeStep</span></span><span class="sig-seperator">])</span></code><dl class="parameter"><dt> mode </dt><dd><span class="markdown"><p>the type of time loop.  Allowed values are &quot;fixed&quot;, &quot;semifixed&quot;, and &quot;variable&quot;.  Crafty defaults to &quot;fixed&quot;.</p>
</span></dd></dl><dl class="parameter"><dt> maxTimeStep </dt><dd><span class="markdown"><p>For &quot;fixed&quot;, sets the max number of frames per step.   For &quot;variable&quot; and &quot;semifixed&quot;, sets the maximum time step allowed.</p>
</span></dd></dl></div><span class="markdown"><p>Can be called to get the type of timestep the game loop uses.</p>
</span><div class="crafty-method"><code class="signature"><span class="sig-phrase"><span class="sig-qualifier">public </span><span class="sig-qualifier">Object </span><span class="sig-noun">Crafty.timer.steptype</span></span><span class="sig-seperator">(</span><span class="sig-phrase"><span class="sig-noun">void</span></span><span class="sig-seperator">)</span></code><dl class="parameter returns"><dt class="returns"> [Returns] </dt><dd><span class="markdown"><p>Object containing the current timestep&#39;s properties { mode, maxTimeStep }</p>
</span></dd></dl></div><span class="markdown"><ul>
<li>In &quot;fixed&quot; mode, each frame is sent the same value of <code>dt</code>, and to achieve the target game speed, mulitiple frame events are triggered before each render.</li>
<li>In &quot;variable&quot; mode, there is only one frame triggered per render.  This recieves a value of <code>dt</code> equal to the actual elapsed time since the last frame.</li>
<li>In &quot;semifixed&quot; mode, multiple frames per render are processed, and the total time since the last frame is divided evenly between them.</li>
</ul>
</span><div><h4>See Also</h4><ul class="see-also-list"><li><a href="#Crafty-timer-FPS">.FPS</a></li></ul></div></div></div></div></div></div>
			
		</div>
	</div>
	<div class="clearer"></div>
	<div id="footer">
		<div id="contact">
			<a href="https://groups.google.com/forum/#!forum/craftyjs">
				<img src="../images/google.png" />
				google groups</a>
			<a href="mailto:starwed@gmail.com">
				<img src="../images/email.png" />
				starwed@gmail.com</a>
			<a href="https://github.com/craftyjs/Crafty">
				<img src="../images/github.png" />
				github</a>
		</div>
		<ul>
			<li><a href="../">首页</a></li>
				<li><a href="../getting-started/">快速开始</a></li>
				<li><a href="../documentation/">文档</a></li>
				<li><a href="../api/">API</a></li>
				<li><a href="../components/">组件</a></li>
				<li class="emph"><a href="../#install">下载</a></li>
		</ul>
		<p>
			&copy; Crafty 2010-2015. Crafty is distributed under the <a href="http://en.wikipedia.org/wiki/MIT_License">MIT License</a>.
		</p>
	</div>
</div>
</body>
</html>
